import re


def mobile(mobile_str):
    """
    检查手机号格式
    :param mobile_str:
    :return:
    """
    if re.match(r"^1[3-9]\d{9}$", mobile_str):
        return mobile_str
    else:
        raise valueError("{} is not a valid mobile".format(mobile_str))


def regex(pattern):
    """
    专门做正则验证的
    :param pattern:
    :return:
    """
    def validate(value_str):
        """
        具体校验一个字符串，根据自定义的正则表达式
        :param value_str:
        :return:
        """
        if re.match(pattern, value_str):
            return value_str
        else:
            raise valueError("{} is invalid params.".format(value_str))
    return validate


def email(email_str):
    """
    检查邮箱格式
    :param email_str:
    :return:
    """
    if re.match(r"^[A-Za-z0-9_\-\.\u4e00-\u9fa5]+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$", email_str):
        return email_str
    else:
        raise valueError("{} is not a valid email.".format(email_str))
